/*
 * Licensed to the 南京汇海交通科技有限公司
 *
 * Copyright (c) 2025.
 * All rights reserved.
 *
 * 本软件属南京汇海交通科技有限公司所有，在未获得南京汇海交通科技有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.chframework.common.constant;

/**
 * SpringBoot应用 常量池
 */
public interface ApplicationConstant {

    /**
     * 当前工程隶属项目的名称
     */
    String DEFAULT_PARENT_PROJECT_ALIAS = "ch-framework-project";

    /**
     * 每一个HTTP请求的唯一标识
     */
    String RESPONSE_IDENTITY = "REQUEST-ID";

    /**
     * 每一个HTTP请求的返回状态
     */
    String RESPONSE_API_RESULT = "API-RESULT";

    /**
     * 对响应报文进行加密的encrypt-key保存在request对象的attribute中
     */
    String REQ_ATTR_ENCRYPT_KEY = "RESP-ENCRYPT-KEY";

    /**
     * HTTP请求头中唯一标识登录用户的参数名
     * （1）如果没有设置`application.session.header-name`则使用该常量作为默认值，否则系统中不会使用到它(在StandardCacheKeyBuilder.java中)。
     * （2）登录成功之后用于创建cacheKey并在redis中存放会话ID。
     * （3）权限控制管理拦截器中，将当前请求的会话ID使用 该常量 或者 已定义的 `application.session.header-name` 作为Key 存放在ThreadLocal中。
     */
    String DEFAULT_TOKEN_KEY = "JSESSIONID";

    /**
     * 异步请求统计响应时长的字段名
     */
    String START_REQUEST_TIME_KEY = "REQUEST-START-TIMESTAMP";

    /**
     * 发送HTTP请求的远程客户端设备标识
     */
    String REMOTE_CLIENT_IP_KEY = "CLIENT-IP";

    /**
     * 当前HTTP请求的会话对象最大存活时长
     */
    String SESSION_DURATION_KEY = "MAX-INACTIVE-INTERVAL-IN-SECONDS";

    /**
     * 与统一身份认证(会话对象)相关的缓存对象分组
     */
    String DEFAULT_GROUP_SESSION = "server-session";

    /**
     * 用户空间的唯一标识
     */
    String FLAG_MANAGED_PROFILE = "User-Agent";

    /**
     * JSON格式 字符标识
     */
    String DEFAULT_JSON_KEY = "JSON";

    /**
     * 异常转发路径
     */
    String ERROR_PATH = "/error";

    /**
     * HTTP协议 和 HTTPS协议 默认端口号
     */
    Integer HTTP_PORT = 80;

    /**
     * 本地域名解析IP
     */
    String LOCAL_DOMAIN = "127.0.0.1";

    /**
     * 本地默认访问链接
     */
    String LOCAL_URL = "http://127.0.0.1/";

}
